package com.xgk.boot.module.core.dal.entity.truck;

import com.baomidou.mybatisplus.annotation.*;
import com.xgk.boot.module.core.enums.biz.InterceptionStatusEnum;
import com.xgk.boot.module.core.enums.biz.LogisticsStatusEnum;
import com.xgk.boot.module.core.enums.biz.OrderStatusEnum;
import com.xgk.boot.framework.mybatis.core.dataobject.BaseDO;
import com.xgk.boot.module.core.enums.biz.SyncStatusEnum;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 卡车订单主表实体
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("truck_orders")
public class TruckOrdersDO extends BaseDO {

    @TableId(value = "order_id", type = IdType.ASSIGN_ID)
    private Long orderId;

    /** 订单编号（唯一键）用户id+日期时间+几位编码 */
    @TableField("order_code")
    private String orderCode;

    /** 客户参考号 */
    @TableField("reference_no")
    private String referenceNo;

    /** 客户ID */
    @TableField("customer_id")
    private Long customerId;

    /** 客户代码（8位字符） */
    @TableField("customer_code")
    private String customerCode;

    /** 物流商品code */
    @TableField("product_code")
    private String productCode;

    /** 服务商渠道代码 */
    @TableField("sp_code")
    private String spCode;

    /** 订单类型：0-普通订单 */
    @TableField("order_type")
    private Integer orderType;

    /** 创建方式：api/export/web */
    @TableField("create_type")
    private String createType;

    /** 国家简码（ISO 2字母） */
    @TableField("country_code")
    private String countryCode;



    /** 运费估算（USD） */
    @TableField("shipping_fee_estimate")
    private BigDecimal shippingFeeEstimate;

    /** 币种代码（ISO 3字母） */
    @TableField("currency_code")
    private String currencyCode;

    /** 内件总数量 */
    @TableField("total_quantity")
    private Integer totalQuantity;

    /** 订单总重量（kg） */
    @TableField("total_weight")
    private Double totalWeight;

    /** 订单状态：0-已取消 1-草稿 2-已提交 3-已预报 99-已作废
     * 枚举 {@link OrderStatusEnum}
     * */
    @TableField("order_status")
    private Integer orderStatus;

//    /** 订单子状态：0-无异常 1-预报异常 */
//    @TableField("order_sub_status")
//    private Integer orderSubStatus;

    /** 拦截状态：0-无 1-申请拦截 2-拦截中 3-拦截失败 4-已拦截
     * 枚举 {@link InterceptionStatusEnum}
     * */
    @TableField("intercept_status")
    private Integer interceptStatus;

    /** 运单号 */
    @TableField("tracking_number")
    private String trackingNumber;

    /** 物流状态：0-未分配 1-找车中 2-已分配司机
     * 枚举 {@link LogisticsStatusEnum}
     * */
    @TableField("logistics_status")
    private Integer logisticsStatus;

    /** 物流跟踪URL */
    @TableField("tracking_url")
    private String trackingUrl;

    /** 最早提货时间（yyyy-MM-dd HH:mm格式） */
    @TableField("earliest_pickup_date")
    private String earliestPickupDate;

    /** 预计送达时间（yyyy-MM-dd HH:mm格式） */
    @TableField("estimated_delivery_date")
    private String estimatedDeliveryDate;

    /** 计费状态：0-计费完成 1-待计费 2-计费失败 */
    @TableField("order_charge_status")
    private Integer orderChargeStatus;

    /** 是否手工上传跟踪号：0-否 1-是 */
    @TableField("is_upload_express")
    private Integer isUploadExpress;

    /** 是否允许重新预报：0-否 1-是 */
    @TableField("is_anew_express")
    private Integer isAnewExpress;

    /** 同步服务商状态：0-未同步 1-已同步 2-同步失败
     * {@link SyncStatusEnum}
     * */
    @TableField("sync_service_status")
    private Integer syncServiceStatus;

    /** 同步次数 */
    @TableField("sync_count")
    private Integer syncCount;

    /** 取消时间 */
    @TableField("cancel_time")
    private LocalDateTime cancelTime;

    /** 物流时间 */
    @TableField("logistics_time")
    private LocalDateTime logisticsTime;

    /** 付款时间 */
    @TableField("order_paydate")
    private LocalDateTime orderPaydate;

    /** 客户备注 */
    @TableField("remark")
    private String remark;

    /** 操作备注 */
    @TableField("operator_note")
    private String operatorNote;

    /** 物流异常信息 */
    @TableField("logistics_err")
    private String logisticsErr;

    /** 同步异常信息 */
    @TableField("sync_info")
    private String syncInfo;

    /** 出账状态：0-未出账 4-已出账 */
    @TableField("bill_status")
    private Integer billStatus;

    /** 是否已打印标签：0-否 1-是 */
    @TableField("print_label")
    private Integer printLabel;

    /** 面单格式：PDF/ZPL */
    @TableField("label_format")
    private String labelFormat;

}